package org.seefly.iprint.mapper;

import org.apache.ibatis.annotations.Param;
import org.seefly.iprint.entity.*;
import org.seefly.iprint.vo.OrderQueryVo;

import java.util.List;

public interface OrdersMapper {
    int countByExample(OrdersExample example);

    int deleteByExample(OrdersExample example);

    int deleteByPrimaryKey(Integer id);

    int insert(Orders record);

    int insertSelective(Orders record);

    List<Orders> selectByExample(OrdersExample example);

    Orders selectByPrimaryKey(Integer id);

    int updateByExampleSelective(@Param("record") Orders record, @Param("example") OrdersExample example);

    int updateByExample(@Param("record") Orders record, @Param("example") OrdersExample example);

    int updateByPrimaryKeySelective(Orders record);

    int updateByPrimaryKey(Orders record);

    /**********************************自定义接口**********************************************/
    
    /**
     * 
     * @Description (获取7天内的交易信息)
     * @return
     */
    List<SalesData> get7DaysSaleData();
    
    
    /**
     * @Description (插入后将主键注入到实体中)
     * @param record 实体类
     * @return 插入影响条数
     */
    int insert4Key(Orders record);

    
    /**
     * 
     * @Description (异步分页按状态查询订单)
     * @param start 起始位置
     * @param size  长度
     * @param status  订单状态
     * @return
     */
    List<OrderItem> findOrdersByStatus(@Param("start") Integer start, @Param("size") Integer size, @Param("status") String status);

    /**
     * 
     * @Description (按状态查询订单总数)
     * @param status 订单状态
     * @return
     */
    Integer findOrdersCountByStatus(String status);

    /**
     * 
     * @Description (多条件查询订单)
     * @param vo
     * @return
     */
    List<OrderItem> getOrdersByCondition(OrderQueryVo vo);

    /**
     * 
     * @Description (多条件查询订单总数)
     * @param vo
     * @return
     */
    Integer getOrdersCountByCondition(OrderQueryVo vo);

    /**
     * 
     * @Description (获取过去七天内各类商品的销售数量，按商品分类)
     * @return
     */
    List<SalesCount> get7DaysSaleCount();

    /**
     * 
     * @Description (ordersMapper)
     * @return
     */
    List<EchartsPojo> get7DaysSalePriceCount();

    void updateStatus(@Param("id") Integer id, @Param("status") String success);
}